Next: Writing Methods, Previous: Making New Objects, Up: Top [Contents][Index]
There are several ways to access slot values in an object. The naming and argument-order conventions are similar to those used for referencing vectors (see Vectors in GNU Emacs Lisp Reference Manual).
This macro sets the value behind slot to value in object. It returns value.
This macro sets the value for the class-allocated slot in class to value.
For example, if a user wanted all
data-objects (see Building
Classes) to inform a special object of his own devising
when they changed, this can be arranged by simply executing
this bit of code:
(oset-default data-object reference (list my-special-object))
Retrieve the value stored in obj in the slot named by slot. Slot is the name of the slot when created by defclass.
Get the value of the class-allocated slot from class.
The following accessors are defined by CLOS to reference or modify slot values, and use the previously mentioned set/ref routines.
This function retrieves the value of slot from
object. Unlike oref, the symbol for
slot must be quoted.
This is not a CLOS function, but is the setter for
slot-value used by the setf macro.
This function sets the value of slot from
object. Unlike oset, the symbol for
slot must be quoted.
This function unbinds slot in object. Referencing an unbound slot can signal an error.
In OBJECT’s slot, add item to the list of elements. Optional argument append indicates we need to append to the list. If item already exists in the list in slot, then it is not added. Comparison is done with equal through the member function call. If slot is unbound, bind it to the list containing item.
In OBJECT’s slot, remove occurrences of item. Deletion is done with delete, which deletes by side effect and comparisons are done with equal. If slot is unbound, do nothing.
Bind spec-list lexically to slot values in
object, and execute body. This
establishes a lexical environment for referring to the slots
in the instance named by the given slot-names as though they
were variables. Within such a context the value of the slot
can be specified by using its slot name, as if it were a
lexically bound variable. Both setf and
setq can be used to set the value of the
slot.
spec-list is of a form similar to let. For example:
((VAR1 SLOT1)
SLOT2
SLOTN
(VARN+1 SLOTN+1))
Where each var is the local variable given to the associated slot. A slot specified without a variable name is given a variable name of the same name as the slot.
(defclass myclass () (x :initform 1)) (setq mc (make-instance 'myclass)) (with-slots (x) mc x) => 1 (with-slots ((something x)) mc something) => 1
Next: Writing Methods, Previous: Making New Objects, Up: Top [Contents][Index]